<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SoupSessionFeature</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="libsoup Reference Manual">
<link rel="up" href="ch03.html" title="Additional Features">
<link rel="prev" href="ch03.html" title="Additional Features">
<link rel="next" href="SoupContentDecoder.html" title="SoupContentDecoder">
<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="ch03.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ch03.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libsoup Reference Manual</th>
<td><a accesskey="n" href="SoupContentDecoder.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#SoupSessionFeature.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#SoupSessionFeature.description" class="shortcut">Description</a>
                   | 
                  <a href="#SoupSessionFeature.object-hierarchy" class="shortcut">Object Hierarchy</a>
                   | 
                  <a href="#SoupSessionFeature.prerequisites" class="shortcut">Prerequisites</a>
                   | 
                  <a href="#SoupSessionFeature.implementations" class="shortcut">Known Implementations</a>
</td></tr>
</table>
<div class="refentry">
<a name="SoupSessionFeature"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="SoupSessionFeature.top_of_page"></a>SoupSessionFeature</span></h2>
<p>SoupSessionFeature — Interface for miscellaneous session features</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="SoupSessionFeature.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;libsoup/soup.h&gt;

                    <a class="link" href="SoupSessionFeature.html#SoupSessionFeature-struct" title="SoupSessionFeature">SoupSessionFeature</a>;
                    <a class="link" href="SoupSessionFeature.html#SoupSessionFeatureInterface" title="SoupSessionFeatureInterface">SoupSessionFeatureInterface</a>;
</pre>
</div>
<div class="refsect1">
<a name="SoupSessionFeature.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
  GInterface
   +----SoupSessionFeature
</pre>
</div>
<div class="refsect1">
<a name="SoupSessionFeature.prerequisites"></a><h2>Prerequisites</h2>
<p>
SoupSessionFeature requires
 <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>.</p>
</div>
<div class="refsect1">
<a name="SoupSessionFeature.implementations"></a><h2>Known Implementations</h2>
<p>
SoupSessionFeature is implemented by
 <a class="link" href="SoupCache.html" title="SoupCache">SoupCache</a>,  <a class="link" href="SoupContentDecoder.html" title="SoupContentDecoder">SoupContentDecoder</a>,  <a class="link" href="SoupContentSniffer.html" title="SoupContentSniffer">SoupContentSniffer</a>,  <a class="link" href="SoupCookieJar.html" title="SoupCookieJar">SoupCookieJar</a>,  <a class="link" href="SoupCookieJarSqlite.html" title="SoupCookieJarSqlite">SoupCookieJarSqlite</a>,  <a class="link" href="SoupCookieJarText.html" title="SoupCookieJarText">SoupCookieJarText</a>,  <a class="link" href="SoupLogger.html" title="SoupLogger">SoupLogger</a>,  <a class="link" href="SoupProxyResolverDefault.html" title="SoupProxyResolverDefault">SoupProxyResolverDefault</a> and  <a class="link" href="SoupRequester.html" title="SoupRequester">SoupRequester</a>.</p>
</div>
<div class="refsect1">
<a name="SoupSessionFeature.description"></a><h2>Description</h2>
<p>
<a class="link" href="SoupSessionFeature.html" title="SoupSessionFeature"><span class="type">SoupSessionFeature</span></a> is the interface used by classes that extend
the functionality of a <a class="link" href="SoupSession.html" title="SoupSession"><span class="type">SoupSession</span></a>. Some features like HTTP
authentication handling are implemented internally via
<a class="link" href="SoupSessionFeature.html" title="SoupSessionFeature"><span class="type">SoupSessionFeature</span></a>s. Other features can be added to the session
by the application. (Eg, <a class="link" href="SoupLogger.html" title="SoupLogger"><span class="type">SoupLogger</span></a>, <a class="link" href="SoupCookieJar.html" title="SoupCookieJar"><span class="type">SoupCookieJar</span></a>.)
</p>
<p>
See <a class="link" href="SoupSession.html#soup-session-add-feature" title="soup_session_add_feature ()"><code class="function">soup_session_add_feature()</code></a>, etc, to add a feature to a session.
</p>
</div>
<div class="refsect1">
<a name="SoupSessionFeature.details"></a><h2>Details</h2>
<div class="refsect2">
<a name="SoupSessionFeature-struct"></a><h3>SoupSessionFeature</h3>
<pre class="programlisting">typedef struct _SoupSessionFeature SoupSessionFeature;</pre>
<p>
An object that implement some sort of optional feature for
<a class="link" href="SoupSession.html" title="SoupSession"><span class="type">SoupSession</span></a>.
</p>
<p class="since">Since 2.24</p>
</div>
<hr>
<div class="refsect2">
<a name="SoupSessionFeatureInterface"></a><h3>SoupSessionFeatureInterface</h3>
<pre class="programlisting">typedef struct {
	GTypeInterface parent;

	/* methods */
	void     (*attach)           (SoupSessionFeature *feature,
				      SoupSession        *session);
	void     (*detach)           (SoupSessionFeature *feature,
				      SoupSession        *session);

	void     (*request_queued)   (SoupSessionFeature *feature,
				      SoupSession        *session,
				      SoupMessage        *msg);
	void     (*request_started)  (SoupSessionFeature *feature,
				      SoupSession        *session,
				      SoupMessage        *msg,
				      SoupSocket         *socket);
	void     (*request_unqueued) (SoupSessionFeature *feature,
				      SoupSession        *session,
				      SoupMessage        *msg);

	gboolean (*add_feature)      (SoupSessionFeature *feature,
				      GType               type);
	gboolean (*remove_feature)   (SoupSessionFeature *feature,
				      GType               type);
	gboolean (*has_feature)      (SoupSessionFeature *feature,
				      GType               type);
} SoupSessionFeatureInterface;
</pre>
<p>
The interface implemented by <a class="link" href="SoupSessionFeature.html" title="SoupSessionFeature"><span class="type">SoupSessionFeature</span></a>s.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GTypeInterface"><span class="type">GTypeInterface</span></a> <em class="structfield"><code><a name="SoupSessionFeatureInterface.parent"></a>parent</code></em>;</span></p></td>
<td>The parent interface.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.attach"></a>attach</code></em> ()</span></p></td>
<td>Perform setup when a feature is added to a session</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.detach"></a>detach</code></em> ()</span></p></td>
<td>Perform cleanup when a feature is removed from a session</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.request-queued"></a>request_queued</code></em> ()</span></p></td>
<td>Proxies the session's <a class="link" href="SoupSession.html#SoupSession-request-queued" title='The "request-queued" signal'><span class="type">"request_queued"</span></a> signal</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.request-started"></a>request_started</code></em> ()</span></p></td>
<td>Proxies the session's <a class="link" href="SoupSession.html#SoupSession-request-started" title='The "request-started" signal'><span class="type">"request_started"</span></a> signal</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.request-unqueued"></a>request_unqueued</code></em> ()</span></p></td>
<td>Proxies the session's <a class="link" href="SoupSession.html#SoupSession-request-unqueued" title='The "request-unqueued" signal'><span class="type">"request_unqueued"</span></a> signal</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.add-feature"></a>add_feature</code></em> ()</span></p></td>
<td>adds a sub-feature to the main feature</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.remove-feature"></a>remove_feature</code></em> ()</span></p></td>
<td>removes a sub-feature from the main feature</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="SoupSessionFeatureInterface.has-feature"></a>has_feature</code></em> ()</span></p></td>
<td>tests if the feature includes a sub-feature</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.24</p>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.18</div>
</body>
</html>